#ifndef GAMETD_TIMER_H
#define GAMETD_TIMER_H

#include <functional>

class Timer {
public:
    Timer() = default;
    ~Timer() = default;
    void Restart();
    void SetWaitTime(double val);
    void SetOneShot(bool flag);
    void SetOnTimeout(std::function<void()> on_timeout);
    void Pause();
    void Resume();
    void OnUpdate(double delta);

private:
    double passTime = 0;                // 从计时器创建开始过去的时间
    double waitTime = 0;                // 等待的指定时间
    bool paused = false;                // 标注计数器是否暂停
    bool oneShot = false;               // 是否是单次触发
    bool shoted = false;                // 如果是单次触发，记录是否触发过
    std::function<void()> onTimeout;    // 计时器到达时间后的回调函数
};

#endif //GAMETD_TIMER_H
